The iSCSI protocol is a standard developed by the Internet Engineering Task Force (IETF) for communicating SCSI commands and data over TCP/IP networks. In this context, iSCSI client computers called “initiators” operate to store data into and retrieve data from data storage arrays called “targets” using packets transmitted over Ethernet connections (the Internet, LANs, WANs, etc.). Each data storage array is a specialized computer system configured to store data within portions of computerized memory (e.g., volumes, LUNs, etc.) with a high level of fault tolerance (e.g. RAID) and low latency (e.g., caching optimizations).
One conventional approach to operating multiple data storage arrays is for a system administrator to manage the arrays as separate array elements. Under this approach, each iSCSI client (or initiator) views the multiple data storage arrays as individual, independent arrays. For example, the clients can view a first array, ARRAY1, which provides access to multiple volumes VOL0, VOL1, VOL2, etc. Similarly, the clients can separately view a second array, ARRAY2, which provides access to multiple other volumes VOL0, VOL1, VOL2, etc., and so on.
Another conventional approach, which is illustrated in FIG. 1, involves the use of an Intelligent Switch (IS) 20 which (i) interconnects between iSCSI clients 22 and multiple data storage arrays 24, and (ii) enables the iSCSI clients 22 to view the data storage arrays 24 as a single array. FIG. 1 shows an IS 20(A) having a client-side interface 26 for connecting to multiple iSCSI clients 22(1), 22(2), 22(3), and an array-side interface 28 for connecting to multiple data storage arrays 24(A)(1), 24(A)(2), 24(A)(3). During operation, the IS 20(A) essentially acts as a front-end to the data storage arrays 24(A)(1), 24(A)(2), 24(A)(3) by receiving iSCSI commands 30 from the clients 22 and processing these iSCSI commands 30 on behalf of the clients 22. Furthermore, data 32 which is exchanged between the clients 22 and the data storage arrays 28(A)(1), 28(A)(2), 28(A)(3) passes through the IS 20(A) in an “in-band” manner. To increase throughput beyond that which is provided by the IS 20(A), other ISs 20 can be added. For example, as further shown in FIG. 1, another IS 20(B) operates as a front-end to additional data storage arrays 28(B)(1), 28(B)(2), 28(B)(3). In this situation, each client 22 must be configured to communicate with two arrays, i.e., a first array presented by the IS 20(A) and a second array presented by the IS 20(B).